package com.openvas.core.gas.until;


import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class SpringContextHolder implements ApplicationContextAware {
 private static ApplicationContext applicationContext;

 public SpringContextHolder() {
 }

 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
     SpringContextHolder.applicationContext = applicationContext;
 }

 public static ApplicationContext getApplicationContext() {
     assertApplicationContext();
     return applicationContext;
 }

 public static <T> T getBean(String beanName) {
     assertApplicationContext();
     return (T) applicationContext.getBean(beanName);
 }

 public static <T> T getBean(Class<T> requiredType) {
     assertApplicationContext();
     return applicationContext.getBean(requiredType);
 }

 private static void assertApplicationContext() {
     if (applicationContext == null) {
         throw new RuntimeException("applicaitonContext属性为null,请检查是否注入了SpringContextHolder!");
     }
 }
}

